package com.zl.gmadmin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zl.gmadmin.entity.SysMenu;
import com.zl.gmadmin.vo.menu.MenuVo;
import com.zl.gmadmin.vo.menu.SysMenuVo;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
 * @author zhangliang
 * @version 1.0
 * @date 2021/2/2 15:01
 */

public interface SysMenuService extends IService<SysMenu> {
    /**
     * 根据权限列表ids查询菜单路由
     *
     * @param ids
     * @return
     */
    List<SysMenu> selectByRoleIdList(Set<Long> ids);

    /**
     * 根据用户id查询菜单
     *
     * @param currentUserId
     * @return
     */
    List<MenuVo> findMenuByUserId(Long currentUserId);

    /**
     * 构建菜单
     *
     * @param menuDtoList
     * @return
     */
    List<com.zl.gmadmin.service.dto.MenuDto> buildTree(List<com.zl.gmadmin.service.dto.MenuDto> menuDtoList);

    /**
     * 懒加载查询系统管理菜单数据
     *
     * @return
     */
    List<SysMenuVo> queryMenu();

    /**
     * 查询当前菜单下的子目录
     * @param pid
     * @return
     */
    List<SysMenuVo> querySupMenu(Long pid);

    /**
     * 查询菜单排序值
     * @param sort max最大值，min最小值
     * @return
     */
    Long queryMenuSort(String sort);

    /**
     * 删除菜单相关
     * @param idList
     * @return
     */
    @Override
     boolean removeByIds(Collection<? extends Serializable> idList) ;

    /**
     * 导出excel
     * @param response
     * @param ids
     */
    void download(HttpServletResponse response, List<Long> ids) throws IOException;

    /**
     * 新增菜单
     * @param sysMenu
     */
    void addMenu(SysMenu sysMenu);
}
